package com.flyqiu.form.api.event;


import com.alibaba.fastjson2.JSONObject;
import com.flyqiu.common.mybaits.plus.FlyQiuQueryWrapper;
import com.flyqiu.form.model.entity.FlyQiuTableConfig;

public interface FlyQiuTableDataEvent extends FlyQiuFormBaseEvent {


    /**
     * 保存数据前
     *
     * @param formConfig 数据配置
     * @param data       数据
     */
    default void beforeSaveData(FlyQiuTableConfig formConfig, JSONObject data) {

    }

    /**
     * 保存数据后
     *
     * @param formConfig 表配置
     * @param data       保存的数据
     */
    default void afterSaveData(FlyQiuTableConfig formConfig, JSONObject data) {

    }

    /**
     * 修改数据前
     *
     * @param formConfig 表配置
     * @param data       数据
     * @param wrapper    条件
     */
    default void beforeUpdate(FlyQiuTableConfig formConfig, JSONObject data, FlyQiuQueryWrapper wrapper) {

    }

    /**
     * 修改数据后
     *
     * @param formConfig 表配置
     * @param data       数据
     * @param wrapper    条件
     */
    default void afterUpdate(FlyQiuTableConfig formConfig, JSONObject data, FlyQiuQueryWrapper wrapper) {

    }

    /**
     * 删除数据前
     *
     * @param formConfig 表配置
     * @param wrapper    条件
     */
    default void beforeDelete(FlyQiuTableConfig formConfig, FlyQiuQueryWrapper wrapper) {

    }

    /**
     * 删除数据后
     *
     * @param formConfig 表配置
     * @param wrapper    条件
     */
    default void afterDelete(FlyQiuTableConfig formConfig, FlyQiuQueryWrapper wrapper) {

    }

    /**
     * 数据查询前
     *
     * @param formConfig 表单配置
     * @param wrapper    查询条件
     */
    default void beforeQueryData(FlyQiuTableConfig formConfig, FlyQiuQueryWrapper wrapper) {

    }

    /**
     * 数据查询后
     *
     * @param formConfig 表单配置
     * @param wrapper    查询条件
     * @param records    查询的数据
     */
    default void afterQueryData(FlyQiuTableConfig formConfig, FlyQiuQueryWrapper wrapper, JSONObject... records) {

    }


    /**
     * 查询数量之前
     *
     * @param formConfig   数据表配置
     * @param queryWrapper 查询条件
     */
    default void beforeCount(FlyQiuTableConfig formConfig, FlyQiuQueryWrapper queryWrapper) {

    }


    /**
     * 查询数量之后
     *
     * @param formConfig   数据表配置
     * @param queryWrapper 查询条件
     */
    default void afterCount(FlyQiuTableConfig formConfig, FlyQiuQueryWrapper queryWrapper) {

    }
}
